package com.sudo.demo.security.util;

import com.google.gson.Gson;
import com.sudo.demo.security.exception.AuthException;
import lombok.extern.slf4j.Slf4j;

import java.util.Objects;

/**
 * gson工具类
 *
 * @author DayDayUp
 * @datetime 2023-09-12 15:54
 **/
@Slf4j
public class GsonUtil {
    /**
     * 简单对象转Json
     *
     * @param obj 对象
     * @return String
     */
    public static String simpleObjToJson(Object obj) {
        if (Objects.isNull(obj)){
            return "";
        }
        try {
            Gson gson = new Gson();
            return gson.toJson(obj);
        } catch (Exception e) {
            log.error("gson：对象转字符串异常",e);
            throw new AuthException("gson：对象转字符串异常");
        }
    }

    /**
     * 简单Json转对象
     *
     * @param json json字符串
     * @param cls 类
     * @param <T> 返回泛型
     * @return T
     */
    public static <T> T simpleJsonToObj(String json, Class<T> cls) {
        Gson gson = new Gson();
        if (Objects.isNull(json)){
            return null;
        }
        T obj = gson.fromJson(json, cls);
        if (Objects.isNull(obj)) {
            return null;
        } else {
            return obj;
        }
    }
}
